Configurable option for generating body content in Post requests
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Configurable option for generating body content in Post requests
Hi,
I'm creating a simple REST service. I figured I'd use JAX-RS. I've generated my API and the documentation looks good.
I'm having trouble modifying the generated JAX-RS code (I'm using Jersey/Jetty) to retrieve 'body' parameters properly. If they're sent in a single packet with the request, the stub is invoked OK. If the body comes in another packet, however, Jetty dispatches the call as soon as the headers are complete and my server stub is invoked with a "null" parameter that should've been retrieved from the HTTP body.
Is there any good JAX-RS sample code that actually properly retrieves a 'body' parameter for use? Is there anything special my code needs to do if the passed function parameter is "null"? Am I supposed to be writing code to retrieve it from the body once that actually arrives, and block until then somehow?
Any pointers to complete sample code (that don't just return"Magic!" without looking at the parameters...) would be much appreciated!
Thanks!
-Patrick.
- Labels:
-
Swagger Codegen
-
Swagger Core
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hello @pwd
can you please share more details? such as codegen version you use, also what jax-rs language (in codegen options) are you using to generated code? and if it's possible, share the api documentation used on your sample
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
do you think you can share client code or part of the client code used to invoke request ?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sure - I use a C++ tool using cpprest stubs generated from the same API. The calling code looks as follows (let me know if there are other parts of interest):
std::shared_ptr<ApiConfiguration> apiConfig = std::make_shared<ApiConfiguration>(); apiConfig->setUserAgent("Agent-42"); apiConfig->setBaseUrl("http://XXX:8080/XXX/XXX-backend/1.0"); std::shared_ptr<ApiClient> apiClient = std::make_shared<ApiClient>(); apiClient->setConfiguration(apiConfig); std::shared_ptr<HostManagementApi> hostMgmtApi = std::make_shared<HostManagementApi>(apiClient); std::shared_ptr<HostSpec> hs = std::make_shared<HostSpec>(); hs->setHostId(hostID); pplx::task<std::shared_ptr<Empty_success_response>> requestTask = hostMgmtApi->addHost(hs); requestTask.then([=](pplx::task<std::shared_ptr<Empty_success_response>> task) { fprintf(stderr, "Task completed; collecting response...\n"); try { std::shared_ptr<Empty_success_response> response = task.get(); } catch (const std::exception &e) { printf("Error exception during task.get(): %s\n", e.what()); } });
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm just using whatever codegen version is current on Swaggerhub, which I'm using for development. I exported the server stubs for plain "jaxrs", IIRC.
Again, the strange part is that the whole operation works fine end-to-end if the body is included in the original request packet; it's when the body is sent in a separate packet that the API is just called with a "null" value for a required [body] parameter.
I'm having some trouble accessing the API through Swaggerhub at the moment but the API definition (in the original yaml) for the Swagger 2.0 version of the API, was as follows:
swagger: '2.0' info: version: '1.0' title: '...' ... HostSpec: type: object required: - host-id properties: host-id: type: string ... paths: /hosts: ... put: description: ... tags: - Host Management operationId: AddHost consumes: - application/json - application/xml produces: - application/json - application/xml parameters: - name: HostSpec description: ... in: body schema: $ref: '#/definitions/HostSpec' required: true responses: 200: description: Successful operation schema: $ref: '#/definitions/empty-success-response' ...
Let me know if there's anything else of possible interest?
Thanks a lot,
-Patrick.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
