자바로 rest api 만들면서 C#으로 테스트하던 도중 포스팅을 하려 한다.
간단한 자바 rest api 이메일 중복 검사 코드
@PostMapping(value = "/duplicate_email")
@ApiOperation(value="이메일 중복검사", notes="회원 가입 시 이메일 중복 확인용.")
public String emailDuplicate(@RequestParam(value = "email", required = true) String email) throws Exception {
if(StringUtils.isEmpty(email) == true)
throw new RestapiInvalidRequestException(CustomErrorCode.Email_Blank, CustomErrorMessgae.emailBlank);
if(email.matches(Constants.emailRegExp) == false)
throw new RestapiInvalidRequestException(CustomErrorCode.Email_Invalid, CustomErrorMessgae.emailInvalid);
Boolean isEmailDuplicate = createService.isEmailDuplicate(email);
ResponseMessage message = new ResponseMessage();
Map<String, Boolean> result = new HashMap<>();
result.put("result", isEmailDuplicate);
message.add(result);
return Singleton.Instance(JsonConvert.class).convert(message);
}
테스트에 사용한 C# 코드 구조
nuget에서 RestSharp을 받았다.
C# 메인
using restapi_client.JsonRequester;
using restapi_client.JsonRequester.Store;
using System;
namespace restapi_client
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//_ = new CreateUser();
//_ = new Pingpong();
//_ = new UserLogin();
//_ = new EmailDuplicate();
//_ = new Pingpong2();
_ = new Information();
//Sample
//IRequest request = new Information();
//request.RequestJson("", "");
Console.ReadLine();
}
}
}
처음에는 인터페이스 구조를 사용하여 Sample처럼 할까 하다가 그냥 안에다가 구현해서 바로 테스트하기로 함.
using System;
using System.Collections.Generic;
using System.Text;
namespace restapi_client
{
interface IRequest
{
string RequestJson(string url, string json);
}
}
매개 변수 하나를 post로 보내는 클래스
using RestSharp;
using System;
using System.Collections.Generic;
using System.Text;
namespace restapi_client.JsonRequester
{
public class EmailDuplicate : RequestBase, IRequest
{
public EmailDuplicate()
{
string url = "create/duplicate_email";
Parameter p = new Parameter("email", "hi@gmail.com", ParameterType.GetOrPost);
base.RequestString(url, p);
}
}
}
매개변수를 보내지 않는 클래스
using RestSharp;
using System;
using System.Collections.Generic;
using System.Text;
namespace restapi_client.JsonRequester.Store
{
public class Information : RequestBase, IRequest
{
public Information()
{
string url = "store/information";
base.Request(url);
}
}
}
json으로 보내는 클래스
using RestSharp;
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
namespace restapi_client.JsonRequester.Store
{
public class Join : RequestBase, IRequest
{
public Join()
{
string url = "store/join";
JsonClass.StoreJoin user = new JsonClass.StoreJoin()
{
};
string jsonString = JsonSerializer.Serialize(user);
base.RequestJson(url, jsonString);
}
}
}
상속받는 base 클래스
using RestSharp;
using System;
using System.Collections.Generic;
using System.Text;
namespace restapi_client
{
public class RequestBase : IRequest
{
private readonly string baseUrl = "로컬주소";
//private readonly string baseUrl = "테스트서버주소";
private RestClient client;
private RestRequest request;
public RequestBase()
{
request = new RestRequest
{
Method = Method.POST
};
request.AddHeader("Accept", "application/json");
request.AddHeader("유저키", "Xe1M0Pi0XL9Uwei8NyhznA==");
request.AddHeader("유저정보", "248");
}
public string RequestJson(string url, string json)
{
client = new RestClient(string.Format("{0}/{1}", baseUrl, url));
request.Parameters.Clear();
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
return response.Content; // raw content as string
}
public string Request(string url)
{
client = new RestClient(string.Format("{0}/{1}", baseUrl, url));
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
return response.Content; // raw content as string
}
public string RequestString(string url, Parameter parameter)
{
client = new RestClient(string.Format("{0}/{1}", baseUrl, url));
request.Parameters.Clear();
request.AddParameter(parameter);
client.Head(request);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
return response.Content; // raw content as string
}
public string RequestString(string url, List<Parameter> parameters)
{
client = new RestClient(string.Format("{0}/{1}", baseUrl, url));
request.Parameters.Clear();
foreach (Parameter p in parameters)
{
request.AddParameter(p);
}
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
return response.Content; // raw content as string
}
}
}
자바 rest api를 만들면서 postman을 사용하지 않고 원하는 패킷을 바로 테스트할 수 있어 좋다.
'C#' 카테고리의 다른 글
26# Winform ListView Focus 잃었을 때도 선택 고정 (0) | 2019.10.25 |
---|---|
25# 비트 연산 (0) | 2019.10.11 |
24# 서버와 접속 중일 때 자신 포트 찾기 (0) | 2019.10.03 |
23# RSACryptoServiceProvider (0) | 2019.10.01 |
22# CQRS (0) | 2019.08.09 |