Asp.net core 학습 노트(Web Api)
웹api가 json으로 되돌아오는 경우 기본적으로 속성 PascalCase를camelCase로 바꿔서 마음에 들어요.
만약 네가 좋아하지 않는다면 그것을 수정할 수 있다
services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())
하지만 이는odata의response에 영향을 미치지 않습니다. odata는 자동camelcase를 하지 않습니다.
asp.netcore는 이전의 웹api와 mvc를 결합시켰다.
화면vc는api입니다.
그러나 나중에api가 확실히 독특한 점이 있다는 것을 발견하고 보조 방법을 제시했다.
namespace Project.Controllers
{
public class PostForm
{
[Required]
public IFormFile file { get; set; }
}
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private DB Db { get; set; }
public ProductsController(DB db)
{
Db = db;
}
[HttpGet]
public ActionResult> Get()
{
return Ok(Db.Products);
}
[HttpGet("{Id}")]
[ProducesResponseType(400)]
[ProducesResponseType(404)]
public ActionResult GetById(string Id,[Required] string code)
{
return NotFound();
}
[HttpPost]
[ProducesResponseType(400)]
public async Task> Post(Product product)
{
Db.Add(product);
await Db.SaveChangesAsync();
return Ok(product);
}
[HttpPost("upload")]
[ProducesResponseType(400)]
public ActionResult<string> Upload([FromForm] PostForm form)
{
return Ok("filename");
}
}
}
MVC에서 자주 사용하는 Controller가 아닌 ControllerBase를 계승합니다.Controller는 ControllerBase를 상속합니다.
[ApiController], 라벨을 사용하면 ApiController는 자동 모델 valid 검사, 자동 binding FromBody, FromQuery 등을 켜지만 FromForm은 직접 써야 한다(기본적으로api는 json이잖아). 지능이 걱정되면 완전히 혼자 쓸 수도 있다.
아니면 어떤 지능을 끄든가. Add the following code in Startup.ConfigureServices after
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
: services.Configure(options =>
{
options.SuppressConsumesConstraintForFormFileParameters = true;
options.SuppressInferBindingSourcesForParameters = true;
options.SuppressModelStateInvalidFilter = true;
});
[HttpPost("nextSegment")] http method 탭을 통해 우리는 get,post,put,delete,route 기능도 포함하여 여러 가지 방법을 쉽게 쓸 수 있어서 좋다.
[Produces ResponseType] 이 라벨의 주요 기능은 문서 작성을 편리하게 하기 위해서입니다. Action Result 범주형에 맞추어 우리는 정상적인 상황에서 되돌아오는 것을 간단하게 나타낼 수 있고 나머지 비정상적인 상황은 Produces ResponseType로 나타낼 수 있습니다.
보통 404, 400이면 다른 건 없겠지.
전재 대상:https://www.cnblogs.com/keatkeat/p/9297672.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.