2016-10-05 2 views
0

Ich schreibe die Dokumentation meines Rest Service unter Verwendung der Spring REST Docs library.Spring REST Doc unamed Anforderungsparameter

Ein Problem, das ich habe, ist, dass ich eine POST-Anfrage mit einer JSON-Struktur als eine Eingabe, die keinen Namen hat, akzeptiere.

Der Antrag sieht ungefähr so ​​aus:

POST /images?limit=3&offset=12 HTTP/1.1 
Content-Type: application/json 
Host: localhost:8080 
Content-Length: 289 

{"acquisitionWindow":0,"platformName":"myPlatform","requireImageFile":false,"requireImageFileOrQuicklook":false,"strictPolygon":false,"showInternal":false,"imageNames":["%"],"startTimeOfYear":0,"stopTimeOfYear":0,"resolutionLowerBound":0.0,"resolutionUpperBound":0.0,"reducedResolution":0} 

Ich mag würde die Eingangsstruktur dokumentieren, haben aber keinen Weg gefunden, es zu tun, so weit.

Die Dokumentation beschreibt etwas wie folgt aus:

this.mockMvc.perform(get("/users?page=2&per_page=100")) 
    .andExpect(status().isOk()) 
    .andDo(document("users", requestParameters( 
      parameterWithName("page").description("The page to retrieve"), 
      parameterWithName("per_page").description("Entries per page") 
    ))); 

Aber mein Parameter hat keinen Namen.

Was ich weit versucht:

requestParameters(
    // TODO: Insert ImageSearch here 
    parameterWithName("{}").description("ImageSearch Structure ")) 

ich auch mit einem leeren Namen versucht haben (""), und die Array-Notation ("[]"). Bisher kein Glück.

Ist es möglich, unamed Parameter zu dokumentieren, oder sollte ich es in eine andere Struktur einbinden?

Danke,

+0

Ich bin mir nicht sicher, ob ich verstanden habe, was der unbenannte Parameter ist. Ist es der JSON im Hauptteil der POST-Anfrage? –

+0

Ja! Das gesamte Json-Objekt wird auf der Backend-Seite als ImageSearch bezeichnet. Dieses Objekt enthält viele Suchparameter. – jlengrand

Antwort

1

Sie requestFields auf org.springframework.restdocs.payload.PayloadDocumentation können Sie die JSON-Nutzlast dokumentieren, die in der Anfrage gesendet wird. Zum Beispiel:

this.mockMvc.perform(get("/users?page=2&per_page=100")) 
    .andExpect(status().isOk()) 
    .andDo(document("users", requestFields( 
      fieldWithPath("acquisitionWindow").description("…"), 
      fieldWithPath("platformName").description("…")))); 

die Request and response payloads section of the documentation für einige weitere Details.

+0

Okay, damit bestätigen Sie, was ich vorhatte. Wenn ich diese Objekte lieber als separates Objekt in meiner Dokumentation dokumentiere, muss ich das JSON-Top-Level-Objekt manuell (statisch) als ImageSearch angeben. Vielen Dank – jlengrand