【发布时间】:2018-04-30 06:53:32
【问题描述】:
我正在根据我最近开始工作的公司给出的给定架构做后端。 我是 C# 的新手,现在我正在尝试为一些 api-s 做一些 post/get/put 方法。 有一个我无法解决的问题。 邮递员 说: { “代码”:1, “消息”:“未授权” } 但是状态码是200 OK。
UserController.cs
[Route("v1/users")]
[Produces("application/json")]
public class UserController : BaseController
{
/// <summary>
/// Get list of users (Authorize)
/// </summary>
/// <returns>
/// </returns>
[ProducesResponseType(typeof(BaseResponseModel<List<UserResource>>), 200)]
[HttpGet]
public async Task<IActionResult> Get()
{
var user = await _userService.GetUserResourcesAsync();
return Success(user);
}
}
这没有任何意义,还是我很笨,没有意识到这个问题? 我有一个登录方法,我可以登录,我得到成功代码,然后我这样做: enter image description here Header
IProductService.cs
public interface IProductService
{
Task<ProductDto> GetAsync(int id);
}
ProductService.cs
public async Task<ProductDto> GetAsync(int id)
{
var product = await _context.Product.SingleOrDefaultAsync(p => p.Id == id);
return _mapper.Map<ProductDto>(product);
}
ProductDto.cs
public class ProductDto
{
public int Id { get; set; }
public CategoryDto CategoryId { get; set; }
public string Title { get; set; }
public bool AllowEdit { get; set; }
public string ItemCode { get; set; }
public string CustomerCode { get; set; }
}
Product.cs
[Table("Products")]
public class Product : DomainModel<int>
{
[Required]
public int ProductCategoryId { get; set; }
[ForeignKey("ProductCategoryId")]
public virtual ProductCategory ProductCategory { get; set; }
[Required, StringLength(256)]
public string Title { get; set; }
[Required, DefaultValue(false)]
public bool AllowEdit { get; set; }
[StringLength(50)]
public string ItemCode { get; set; }
[StringLength(50)]
public string CustomerCode { get; set; }
}
【问题讨论】:
-
必须有一些标头或访问令牌什么的?另外,建议大家下载Postman最新的原生应用-getpostman.com/apps
-
我有更新的问题可以看到编辑版本吗?标题链接?
-
这条消息在正文中,正文对标头一无所知。它们的设置不同,并且没有相互连接。您可以在雕像为 404 时发送正确的数据。您可以根据您的情况使用 200 OK Statues 发送错误消息或错误数据
-
你需要检查其他返回用户数据的函数的逻辑,并根据其他函数的输出设置这个web方法的状态
-
@SaIda - 代码按预期工作,正如您在 API 上定义的
ProducesResponseType。详情见我的回答。