2016-02-16 16 views
6

Tôi muốn hỏi liệu có bất kỳ hỗ trợ nào cho tham số POST trong RAML hay không. Và nếu có - cú pháp là gì. Tôi đã duyệt thông số 0.8 và chỉ định số 1.0 (thực ra tôi bị ràng buộc là 0.8, vì nhiều công cụ không hỗ trợ 1.0). Tôi không tìm thấy hỗ trợ POST thông số, nhưng có lẽ tôi chỉ bỏ lỡ một cái gì đó.Hỗ trợ thông số POST trong RAML

Vì vậy, ý của tôi là gì? Đây có thể là một trong hai (xin lỗi, tôi không biết tên chính thức của họ, nếu có bất kỳ):

  • HTTP thông số đơn giản, key=value, mỗi tham số trong một dòng, như

    name=John Doe amount=5 mà không phải là thực sự tiện dụng (ví dụ như không có làm tổ)

  • thông số như JSON đối tượng, chỉ cần một JSON với tất cả các cú pháp của nó cho phép (server-side cần phải phân tích json này); chẳng hạn như:

    {"name":"John Doe","amount":"5"}

triển khai server-side API khác nhau sử dụng hoặc 1 hoặc một trong 2. Dù sao, RAML hỗ trợ như thế nào?

+0

Loại nội dung nào đang được sử dụng cho tùy chọn 1? –

+0

@DavidDossot Nó không quan trọng, tôi có thể điều chỉnh nó sau này. Câu hỏi đặt ra là về khái niệm. Bạn có thể giả định rằng 'name' là kiểu' string' và 'amount' của kiểu' number'. – ducin

+0

Điều quan trọng vì loại nội dung là một phần của đặc tả cơ thể yêu cầu trong RAML. Ngoài ra tôi không quen thuộc với mã hóa này và vì vậy tôi đã hy vọng tìm hiểu thêm về nó một khi tôi biết loại. –

Trả lời

6

@Pedro đã bao phủ phương án 2, vì vậy đây là lựa chọn 1. Căn cứ vào các cuộc thảo luận trong ý kiến, có vẻ như mã hóa được sử dụng là application/x-www-form-urlencoded.

Bạn cần sử dụng formParameters.

Ví dụ:

post: 
    description: The POST operation adds an object to a specified bucket using HTML forms. 
    body: 
     application/x-www-form-urlencoded: 
     formParameters: 
      AWSAccessKeyId: 
      description: The AWS Access Key ID of the owner of the bucket who grants an Anonymous user access for a request that satisfies the set of constraints in the Policy. 
      type: string 
      acl: 
      description: Specifies an Amazon S3 access control list. If an invalid access control list is specified, an error is generated. 
      type: string 

tham khảo: https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#web-forms

4

bài viết thông số có thể được thể hiện bằng JSON Schema

Một RAML đơn giản 0.8 Ví dụ:

#%RAML 0.8 
title: Api 
baseUri:/
schemas: 
    - Invoice: | 
    { 
     "$schema": "http://json-schema.org/draft-03/schema", 
     "type": "object", 
     "properties": { 
     "Id": { "type": "integer"}, 
     "Name": { "type": "string"}, 
     "Total": { "type": "number"} 
     } 
    } 
/invoices: 
    post: 
    body: 
     application/json: 
     schema: Invoice 
+0

vì vậy lược đồ JSON có thể được sử dụng cho cả lược đồ yêu cầu và định nghĩa lược đồ phản hồi, đúng không? – ducin

+0

có thể, xem: https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#responses –

+0

cảm ơn cả hai, quý ông. Xin lỗi tôi không thể chấp nhận cả hai, tôi chấp nhận @DavidDossot vì nó có vẻ khó khăn hơn. – ducin

7

Vì nó được trình bày trong tài liệu tham khảo này https://github.com/raml-org/raml-spec/wiki/Breaking-Changes:

Đối raml 0.8:

body: 
    application/x-www-form-urlencoded: 
    formParameters: 
     name: 
     description: name on account 
     type: string 
     example: Naruto Uzumaki 
     gender: 
     enum: ["male", "female"] 

là tương đương trong raml 1.0 tới:

body: 
    application/x-www-form-urlencoded: 
    properties: 
     name: 
     description: name on account 
     type: string 
     example: Naruto Uzumaki 
     gender: 
     enum: ["male", "female"] 

Vì vậy, những gì nó thay đổi là thuộc tính formParameters cho thuộc tính.

+1

Cảm ơn ví dụ về raml 1.0! –

Các vấn đề liên quan