How to include Http request method name in client method names generated with NSwag

不打扰是莪最后的温柔 提交于 2020-01-03 03:20:07

问题


When I generate a C# client for an API using NSwag, where the API includes endpoints that can be used with multiple Http request types (e.g. POST, GET) the client generates a method for each request with the same base name, plus a number.

E.g. Using this API: https://api.premiumfunding.net.au/assets/scripts/swagger/v1/swagger.json

The schema contains an endpoint /contract that supports GET and POST requests, and an endpoint /contract/{ID} that supports GET, POST and DELETE requests.

The generated client has methods:

  • ContractAsync for GET requests without ID
  • Contract2Async for POST requests without ID
  • Contract3Async for GET requests with ID
  • Contract4Async for POST requests with ID
  • Contract5Async for DELETE requests with ID

I would like it to generate methods named:

  • GetContractAsync for GET requests without ID
  • PostContractAsync for POST requests without ID
  • GetContractAsync for GET requests with ID (method overload)
  • PostContractAsync for POST requests with ID (method overload)
  • DeleteContractAsync for DELETE requests with ID

At the moment I am just renaming the methods manually.

Is it possible to configure NSwag to generated these method names?

(Or is there an alternative tool that will give me this result?)


回答1:


You can implement and provide an own IOperationNameGenerator:

https://github.com/RSuter/NSwag/blob/master/src/NSwag.CodeGeneration/OperationNameGenerators/IOperationNameGenerator.cs

Another option would be to preprocess the spec and change the “operationId”s to the form “controller_operation” (simple console app based on the NSwag.Core package)



来源:https://stackoverflow.com/questions/49891178/how-to-include-http-request-method-name-in-client-method-names-generated-with-ns

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!