我正在尝试为我的 API 生成 swagger 文档。每次我导航到 swagger 文档时都会收到此错误:
不明确的 HTTP 操作方法 - [ControllerName]Controller.DownloadFile。操作需要 Swagger/OpenAPI 3.0 的显式 HttpMethod 绑定
这是我的控制器中抱怨的“有问题的”代码:
using Models;
using Utilities;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class LibrarianController : ControllerBase
{
private IFileUploadUtilties fileUtilities;
private IConfiguration config;
private ApiContext context;
private IFileRetrieval fileRetrieval;
public LibrarianController(IFileUploadUtilties utilities, IConfiguration config, FinwiseApiContext context, IFileRetrieval fileRetrieval)
{
fileUtilities = utilities;
this.config = config;
this.context = context;
this.fileRetrieval = fileRetrieval;
} …Run Code Online (Sandbox Code Playgroud) 我正在将有效的 JSON 对象传递到 .net core 3 Web api 应用程序上的控制器。这样做,我收到错误:
System.NotSupportedException:不支持接口类型的反序列化。输入“OrderTranslationContracts.OrderContracts+IImportOrderLineModel”
所以我查看了我的代码,并得到了以下接口的具体实现。这是我认为引发错误的行:
public List<OrderContracts.IImportOrderLineModel> Lines { get; set; }
Run Code Online (Sandbox Code Playgroud)
以下是我传递到控制器的 JSON 部分:
"lines": [
{
"orderNumber": "LV21131327",
"lineNumber": 1,
"itemId": "3083US",
"customerItemId": "3083US",
"quantity": 3,
"price": 0.00,
"quantityBackOrdered": null,
"comments": "",
"pickLocation": "",
"orderFilled": "O",
"hostUom": null,
"type": null
}
Run Code Online (Sandbox Code Playgroud)
所以我知道 JSON 是有效的。这是控制器的签名:
[HttpPost]
public async Task<List<ImportOrderModel>> Post([FromBody] List<ImportOrderModel> orders)
{
var response = await _validateOrder.ValidateAllOrdersAsync(orders, null);
return response;
}
Run Code Online (Sandbox Code Playgroud)
我什至没有闯入这段代码,因为我假设 JSON 反序列化器在尝试转换它时抛出错误。那么我该如何克服这个错误呢?我受到接口的具体实现的约束,因此我无法更改接口,如果可能的话,我需要使用我这里拥有的接口。如果这是不可能的,是否有任何“解决方法”?
这似乎是一个冷漠的问题,我无法在任何地方(包括此处)找到答案,因此我将再试一次,看看是否有人有解决方案。我有一个 SharePoint 2013 实例,我使用 REST API 进行内容搜索并返回到我的 React 前端进行显示。这很好用。但是,当我只需要在整个站点中搜索特定文档列表而不仅仅是在目录或特定列表中搜索时,我现在遇到了问题。我可以使用 /_api/search/query?queryText="" 进行内容搜索,但我想构建此 API 端点的查询文本以仅搜索我提供的列表中的文档。
例如,如果我要查找三个文件:
我只想要这些文档和相应的数据(比如我使用搜索 api 获得的 RedirectEmbedURL 等),而不是 /_api/web/lists/getByTitle 方法。
有没有办法格式化查询字符串以仅返回特定文件?
谢谢。
我有这个控制器来上传文件:
[HttpPost]
public async Task<IActionResult> Post([FromForm] FileInformation fileInfo)
{
int newFileVersion = 1;
if (fileInfo == null || fileInfo.Files == null || fileInfo.Files.Count == 0)
return BadRequest("File(s) not found");
try
{
foreach (var locFile in fileInfo.Files)
{
//check for file extension, if not there, return an error
var fileExtension = Path.GetExtension(locFile.FileName);
if (string.IsNullOrEmpty(fileExtension))
return BadRequest("Files must include file extension");
var valid = await fileUtilities.IsFileValid(locFile);
var newFileName = string.Concat(Guid.NewGuid().ToString(),valid.fileExtension);
var newFileLocation = Path.Combine(config.GetSection("StoredFilePath").Value, newFileName);
if (!valid.FileExtensionFound)
{
return BadRequest($"Error {valid.FileExtensionFoundError}");
} …Run Code Online (Sandbox Code Playgroud) asp.net-core ×2
c# ×2
.net ×1
.net-core ×1
json ×1
swagger ×1
swagger-ui ×1
unit-testing ×1
xunit.net ×1