2016-02-16 10 views
6

Ich möchte fragen, ob es keine Unterstützung für POST-Parameter in RAML gibt. Und wenn es - was ist die Syntax? Ich habe spec 0.8 und spec 1.0 grob durchgesehen (eigentlich bin ich an 0.8 gebunden, da viele Werkzeuge 1.0 noch nicht unterstützen). Ich habe keine Unterstützung für POST-Parameter gefunden, aber vielleicht habe ich gerade etwas verpasst.POST-Parameter-Unterstützung in RAML

Was meine ich mit POST-Parametern? Diese können entweder von den beiden sein (sorry, ich weiß nicht, ihre formalen Namen, wenn es welche gibt):

  • HTTP Ebene Parameter, key=value, jeder Parameter in einer Zeile, wie

    name=John Doe amount=5 die, nur ein JSON mit all seiner Syntax erlaubt (serverseitige muss dieses json analysiert) nicht wirklich praktisch (zB keine Verschachtelung)

  • Parameter als JSON-Objekt ist; wie zum Beispiel:

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

Verschiedene serverseitige API-Implementierungen entweder 1. oder 2. eine solche verwenden. Wie auch immer, Wie unterstützt RAML diese?

+0

Welcher Inhaltstyp wird für Option 1 verwendet? –

+0

@DavidDossot Es ist egal, ich kann es später einstellen. Die Frage betrifft das Konzept. Sie können davon ausgehen, dass 'name' vom Typ' string' und 'menge' vom Typ' number' ist. – ducin

+0

Es spielt eine Rolle, da der Inhaltstyp Teil der Anforderungshauptteilspezifikation in RAML ist. Ich bin auch mit dieser Codierung nicht vertraut und so hoffte ich, mehr darüber zu erfahren, sobald ich den Typ kannte. –

Antwort

6

@Pedro 2 Option abgedeckt hat, hier so ist Option 1. Auf der Grundlage der Diskussion in der Kommentare, es scheint, die Codierung ist application/x-www-form-urlencoded.

Sie müssen formParameters verwenden.

Beispiel:

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 

Referenz:

Für raml 0,8::

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

ist das Äquivalent in raml 1.0 https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#web-forms

4

Beitrag Parameter können mit JSON Schema

einem einfachen RAML 0,8 Beispiel ausgedrückt werden:

#%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

, so dass das JSON-Schema sowohl für das Anfrageschema als auch für die Antwortschemadefinition verwendet werden kann, oder? – ducin

+0

ja kann, siehe: https://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#responses –

+0

danke euch beiden, Gentleman. Sorry, ich kann beides nicht akzeptieren, ich akzeptiere @DavidDossot, da es schwieriger scheint. – ducin

7

Wie es in dieser Referenz https://github.com/raml-org/raml-spec/wiki/Breaking-Changes gezeigt wird zu:

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

Also was es ändert, ist das Attribut formParameters zu den Eigenschaften eins.

+1

Danke für das Beispiel raml 1.0! –

Verwandte Themen