ASP.NET Core 에 서 는 액 션 에 다양한 방식 을 어떻게 활용 할 것 인가?
7192 단어 asp.netcoreaction인삼 을 전하 다
ASP.NET Core 는 크로스 플랫폼 으로 오픈 소스,경량급,고성능,고도 모듈 화 된 웹 프레임 워 크 입 니 다.ASP.NET Core MVC 에 서 는 Action 방법 에 인 자 를 전달 할 수 있 는 여러 가지 방식 이 있다.예 를 들 어 url 방식,query string 방식,request header,request body,form 등 이다.이 편 은 여러분 과 함께 이러한 방식 을 어떻게 사용 하 는 지 토론 하고 코드 로 일일이 검증 합 니 다.
AuthorRepository 클래스 만 들 기
이 예 에서 저 는 Repository 류 를 사용 한 다음 에 Controller 에서 Action 방법 으로 이 Repository 를 호출 하여 기본 적 인 CURD 작업 을 실현 할 것 입 니 다.먼저 Author 류 를 설명 하 겠 습 니 다.코드 는 다음 과 같 습 니 다.
public class Author
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Author Repository 류 는 다음 과 같은 세 가지 방법 을 제공 합 니 다.GetAuthor 는 일반적인 집합 에서 Author 실 체 를 가 져 오 는 데 사 용 됩 니 다
public class AuthorRepository
{
List<Author> authors = new List<Author>()
{
new Author
{
Id = 1,
FirstName = "Joydip",
LastName = "Kanjilal"
},
new Author
{
Id = 2,
FirstName = "Steve",
LastName = "Smith"
}
};
public Author GetAuthor(int id)
{
return authors.FirstOrDefault(a => a.Id == id);
}
public List<Author> GetAuthors(int pageNumber = 1)
{
int pageSize = 10;
int skip = pageSize * (pageNumber - 1);
if (authors.Count < pageSize)
pageSize = authors.Count;
return authors
.Skip(skip)
.Take(pageSize).ToList();
}
public bool Save(Author author)
{
var result = authors.Where(a => a.Id == author.Id);
if (result != null)
{
if (result.Count() == 0)
{
authors.Add(author);
return true;
}
}
return false;
}
}
url 방식 으로가장 간단 하고 거 친 액 션 전 삼 은 url 방식 을 통 해 다음 코드 세 션 은 url 을 통 해 전 삼 하 는 방법 을 보 여 줍 니 다.
[HttpGet]
[Route("Default/GetAuthor/{authorId:int}")]
public IActionResult GetAuthor(int authorId)
{
var data = authorRepository.GetAuthor(authorId);
return View(data);
}
입력 한 url 형식 은 다음 과 같 습 니 다:GET: http://localhost:8061/Default/GetAuthor/1
query string 방식 으로
이런 방식 의 방법 은 바로 채택 하 는 것 입 니까?의 모델 은 url 의 구조 정 보 를 수정 하지 않 아 도 되 기 때문에 뒤로 호환성 을 가지 고 아래 코드 세 션 을 고려 합 니 다.query string 방식 으로 action 에 어떻게 전 달 했 습 니까?
[HttpGet]
[Route("Default/GetAuthors/{pageNumber:int}")]
public IActionResult GetAuthors([FromQuery
(Name = "pageNumber")] int pageNumber = 1)
{
var data = authorRepository.GetAuthors(pageNumber);
return Ok(data);
}
입력 한 url 형식 은 다음 과 같 습 니 다:GET: http://localhost:8061/Default/GetAuthors?pageNumber=1
주의해 야 할 것 은 Action 방법의 pageNumber 인 자 는 선택 할 수 있 습 니 다.들 어 오지 않 으 면 기본 값 은 1 로 계산 합 니 다.예 를 들 어 밑 에 있 는 AuthorList 에 100 개의 기록 이 있 고 현재 전 달 된 page=3 이 있 으 면 이 방법 은 31-40 이라는 10 개의 기록 을 되 돌려 줍 니 다.여기 있 는 페이지 당 몇 개 를 되 돌려 주 는 지 하 드 인 코딩 을 사용 합 니 다.예 를 들 어 제 가 정의 한 것 은 10 입 니 다.여러분 은 자신의 상황 에 따라 합 리 적 인 값 을 설정 할 수 있 습 니 다.
request header 방식 으로
대부분 상황 에서 신분 정보,프라이버시 데이터 등 을 전달 하 는 장면 에서 이런 방식 을 사용한다.예 를 들 어 Basic 검증 은 다음 과 같다.
또는 신용 카드 를 header 에 넣 거나 아래 코드 는 Action 에서 header 의 신용카드 번 호 를 받 는 방법 을 보 여 줍 니 다.
[HttpGet]
[Route("Default/IsCreditCardValid/{creditCardNumber}")]
public IActionResult IsCreditCardValid([FromHeader] string creditCardNumber)
{
string regexExpression =
"^(?:(?<visa>4[0-9]{12}(?:[0-9]{3})?)|" +
"(?<mastercard>5[1-5][0-9]{14})|" +
"(?<amex>3[47][0-9]{13})|)$";
Regex regex = new Regex(regexExpression);
var match = regex.Match(creditCardNumber);
return Ok(match.Success);
}
목적 을 간소화 하기 위해 IsCreditCardValid 방법 은 Visa,MasterCard,Amex 등 세 가지 유형의 신용카드 만 검증 할 수 있 습 니 다.다른 신용카드 로 확장 하려 면 스스로 수정 하 셔 도 됩 니 다.신용카드 번 호 는 일반적으로 안전하게 전달 되 어야 하기 때문에 이런 방식 을 사용 하 는 것 이 좋 습 니 다.포스트 맨 을 통 해 신용카드 번 호 를 헤더 에 넣 는 방법 을 보 여 준다.request body 방식 사용 하기
request body 는 insert 나 update 작업 을 수행 하 는 데 자주 사용 되 며,우리 가 평소에 웹 개발 에서 가장 많이 사용 하 는 매개 변수 전달 방식 이기 도 합 니 다.아래 코드 세 션 은 Action 에서 request body 를 받 는 방법 을 보 여 줍 니 다.
[HttpPost]
[Route("Default/Insert")]
public IActionResult Insert([FromBody] Author author)
{
return Ok(authorRepository.Save(author));
}
다음은 전단 이 어떻게 post 데 이 터 를 백 엔 드 로 가 는 지 살 펴 보 겠 습 니 다.여 기 는 계속 Postman 을 사용 하여 테스트 를 진행 합 니 다.Default Controller 의 전체 코드
전 모 를 볼 수 있 도록 모든 전송 방식 을 Default Controller 로 나열 했다.
public class DefaultController : Controller
{
private readonly AuthorRepository authorRepository =
new AuthorRepository();
[HttpGet]
[Route("Default/GetAuthor/{authorId:int}")]
public IActionResult GetAuthor(int authorId)
{
var data = authorRepository.GetAuthor(authorId);
return Ok(data);
}
[HttpGet]
[Route("Default/GetAuthors/{pageNumber:int}")]
public IActionResult GetAuthors([FromQuery
(Name = "pageNumber")] int pageNumber = 1)
{
var data = authorRepository.GetAuthors(pageNumber);
return Ok(data);
}
[HttpGet]
[Route("Default/IsCreditCardValid/{creditCardNumber}")]
public IActionResult IsCreditCardValid
([FromHeader] string creditCardNumber)
{
string regexExpression =
"^(?:(?<visa>4[0-9]{12}(?:[0-9]{3})?)|" +
"(?<mastercard>5[1-5][0-9]{14})|" +
"(?<amex>3[47][0-9]{13})|)$";
Regex regex = new Regex(regexExpression);
var match = regex.Match(creditCardNumber);
return Ok(match.Success);
}
[HttpPost]
[Route("Default/Insert")]
public IActionResult Insert([FromBody] Author author)
{
return Ok(authorRepository.Save(author));
}
}
마지막 으로 form 형식 으로 Action 에 인 자 를 전달 할 수 있 지만 form 의 장면 은 파일 업로드 에 더 많이 사 용 됩 니 다.이렇게 하려 면 IFormFile 을 이용 하여 해결 할 수 있 습 니 다.여기 서 ASP.NET Core 에서 Action 에 다양한 방식 으로 인삼 을 전달 하 는 방법 에 관 한 글 을 소개 합 니 다.더 많은 관련 ASP.NET Core 가 Action 에 다양한 방식 으로 인삼 을 전달 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 관심 을 가 져 주시 기 바 랍 니 다!
링크
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ASP.NET Core 에서 전역 이상 차단 을 실현 하 는 전체 절차UseExceptionHandler 확장 방법 은 ExceptionHandler 미들웨어 를 Asp.net Core 의 요청 처리 파이프 에 등록 한 다음 IException Handler Feature 인터페이스의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.