提问人:Sravani Yadav 提问时间:11/9/2023 最后编辑:Sravani Yadav 更新时间:11/11/2023 访问量:73
我们能 ASP.NET Core REST API同时支持JSON和SOAP吗?
Can we make ASP.NET Core REST API support both JSON & SOAP?
问:
我想做一个同时支持json和soap的REST API。我尝试了nuget包,但出现如下错误:SoapCore
IEndpointRoutebuilder 不包含“UseSoapEndpoint 和最佳扩展方法重载”的定义 SoapEndpointExtensions.UseSoapEndpoint <1EmployeeBiz> (IApplicationBuilder、字符串、SoapEncoderOptions、 SoapSerializer、 bool、 ISoapModelBounder、 WediFileOptions、 bool、 bool) 需要类型为“Microsoft.AspNetCore.Builder.IApplicationbuilder”的接收器。
请求到达管道末尾,但未执行终结点:SoapCore。如果使用路由,请使用 IApplicationBuilder.UseEndpoints (...) 注册 EndpointHiddleware。"
我在文件中使用了这段代码:startup.cs
endpoints.UseSoapEndpoint<IEmployeeBiz>("/Service.asmx", new SoapEncoderOptions(), SoapSerializer.XmlSerializer);
你能指导任何其他替代方案来使REST API支持json和soap吗?
更新:
我们将 .Net Core 迁移到 .Net 6,并且我们有多个旧客户向我们的 API 发送 soap 请求。我们不想要求客户在他们最终进行更改,因此我们希望我们的 RestAPI 同时支持 JSON 和 XML 请求和响应。
答:
在单个 API 中同时支持 JSON 和 SOAP 可能会增加一些复杂性。考虑应用程序的具体要求,以及是否需要同时支持这两种格式。如果可以的话,为 JSON 和 SOAP 设置单独的端点甚至单独的服务通常更简单。
在 Startup.cs 文件中,为 JSON 和 SOAP 配置服务。
services.AddControllers().AddNewtonsoftJson();
services.AddSoapCore();
配置 API 端点以处理 JSON 和 SOAP 请求。
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.UseSoapEndpoint<YourService>("/YourSoapService.asmx", new BasicHttpBinding());
});
创建 API 控制器以处理 JSON 请求。ASP.NET Core 默认支持 JSON,因此可以使用 ApiController 属性并返回 JSON 响应。
[ApiController]
[Route("api/[controller]")]
public class YourController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
// Your JSON logic here
return Ok(new { message = "JSON response" });
}
}
评论
.asmx