在邮递员中获取接受参数的请求,当前发送不支持的媒体类型错误

Posted

技术标签:

【中文标题】在邮递员中获取接受参数的请求,当前发送不支持的媒体类型错误【英文标题】:get request to accepts params in postman, currently sends a unsupported media type error 【发布时间】:2021-10-04 04:55:40 【问题描述】:

我使用正文请求构建了不同的 get 方法来选择一个 id(使用原始 json)。但是,当我了解到 get 方法不支持正文请求时,我想进行更改以便可以在 postman insted 中使用 params。但是,当我现在执行此操作时,我得到了 415 Unsupported Media Type。

方法如下:

    public async Task<IEnumerable<RentReason>> getRentReason(RentReason model)
      
        var parameters = new DynamicParameters();
        parameters.Add("@rentId", model.rentreasonId);
        var getAllRentReason = await _sqlconnection.QueryAsync<RentReason>($@"SELECT 
        CostItem.ID as rentreasonId,
        CostItem.CostItemTypeID as claimReason,
        RequestRentServiceReason.Name as rentReason, 
        RequestRentServiceCartype.Name as RentServiceCarTypeID, 
        DateFrom, DateTo, Price as totalPrice 
        FROM CostItem 
        INNER JOIN RequestRentServiceReason ON CostItem.RentReasonID = RequestRentServiceReason.ID
        INNER JOIN RequestRentServiceCartype ON CostItem.RentServiceCartypeID = RequestRentServiceCartype.ID
        WHERE CostItem.ID = @rentId", parameters);
        return getAllRentReason;
    

控制器:

 [HttpGet]
        public async Task<IActionResult> getRentReason(RentReason model)
        
            if (!ModelState.IsValid)
            
                return BadRequest(ModelState);
            
            try
            
                var list = await _request.getRentReason(model);
                return Ok(list);
            
            catch (Exception ex)
            

                return BadRequest(ex.Message);
            
            return Ok();
        

接口类:

Task<IEnumerable<RentReason>> getRentReason(RentReason model);

在我在正文中发送请求之前:


    "rentreasonId": "40"

但我想在参数中发送它,例如:

https://localhost/Request/getRentReason?rentreasonId=40

有人知道如何实现吗?

【问题讨论】:

public async Task&lt;IActionResult&gt; getRentReason([FromQuery] RentReason rentreasonId) ? @Fildor 它有效,我只需要更改控制器和方法。太感谢了!如果你回答这个问题,我可以接受它作为答案:) 【参考方案1】:

您可以使用[FromQuery] 属性将方法参数绑定到查询参数。

在你的情况下,它应该是这样的:

public async Task<IActionResult> getRentReason([FromQuery] int rentreasonId)

这将使您能够使用&lt;your controller path&gt;/rentReason?rentreasonId=40


但是,我建议为此使用路由参数:

[HttpGet("/your/api/route/rentreason/rentreasonId")]
public async Task<IActionResult> getRentReason([FromRoute] int rentreasonId)

这会让你得到像&lt;authority&gt;/your/api/route/rentreason/40 这样的东西。

供参考:FromRouteAttribute

【讨论】:

以上是关于在邮递员中获取接受参数的请求,当前发送不支持的媒体类型错误的主要内容,如果未能解决你的问题,请参考以下文章

“使用邮递员放入适应性时不支持的媒体类型

伪造Api PATCH请求返回415“不支持的媒体类型”

将整数列表发送到 REST API 会引发 415(不支持的媒体类型)

用文件向服务器发送请求

不支持的媒体类型 Django API

我正在尝试从邮递员发送帖子请求,但起初请求被接受,但数据存储为空