피곤핑
코딩일탈
피곤핑
전체 방문자
오늘
어제
  • 분류 전체보기
    • Kotlin & Java
    • Spring
      • Spring Security
      • Spring
    • 네트워크
    • JavaScript & Node js
    • Docker
    • Python3
    • Unity
    • 딥러닝
    • 객체지향프로그래밍
    • Error 보고서
    • 나의 이야기 & 회고
    • HTML & CSS
    • Archive
    • 독서

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • JavaScript
  • nodejs
  • 개발자취업
  • TiL
  • Client
  • 99클럽
  • 코딩테스트준비
  • 항해99
  • 오블완
  • 티스토리챌린지

최근 댓글

hELLO · Designed By 정상우.
피곤핑

코딩일탈

1001 웹 API
Archive

1001 웹 API

2019. 10. 1. 13:54

강사님 컴 

서버 이름 : cn76.indisk.co.kr,3423

불러오는 중입니다...

 

1. 새 프로젝트

 

2. 비어있음 > 웹 api 추가

3. 고급 > https에 대한 구성 꺼놓기 (보안 프로토콜)

4. controller > 새 컨트롤러 추가 > 읽기/쓰기 동작이 포함된 wep api 컨트롤러 > 추가 / 이름 : defaultController

5. 실행해보면 실행이 안되는 것을 알 수 있음

6. routetemplete : 사이트,,,?  /api/컨트롤러이름/아이디이름


postman?

 

크롬에서 요청하면 기본적으로 XML로 보여주고

postman에서 요청하면 JSON으로 넘어옴!

get 방식

url?name=1&age=2 -> 쿼리스트링

단점 - 눈에 값들이 다 보임(암호화x) / 4,000개의 정보를 보낼때 제한이 있음! (1,000자 제한) 

 

post 방식 

 - 데이터를 집어넣을 때

get방식을 극복 - Headers 사용 

 

put

 - 데이터를 업데이트

 

patch

 - 데이터를 지울 때

 

참고 : 구글 - c# 웹 api 쳐서 학습하기

강사님 : (더 쉬운방법) 프로젝트를 2개 만들어서 데이터 레이어를 따로두기 

> 새 프로젝트 > 클래스 라이브러리(.NET FRAMEWORK) > Chinook.Data > 프레임워크 4.7.2 > 만들기

> class1.cs 삭제 > 새 항목 추가 > ADO.NET 모델 / 이름 : chinook > 새연결 > sql server > 

>> 하다보면 전에 생겼던 NUGET 문제가 생길텐데 전에 해결했던 방법대로 해결하시길~~~~ 

> 최종적으로 .Data, .Api 프레임워크 두개가 있어야함! 

 


<connectionStrings> 복사 붙여넣기~!

원래프로젝트에는 app.config 있고 새로만든 프로젝트에는 web.config 있는데 거기에 복사 붙여넣기~~!

 

 

Ewig에 있던 entity 데이터 복사해서 붙여넣기하자

data 폴더 만들고 새로운 클래스 추가~! EntityData.cs (네임스페이스 조정)

몽땅 ChinookEntities 라고 바꾸기!!!!! 

 

ArtistData 만들기 > EntityData 상속해주기 : EntityData<Artist>


꼭 프로젝트마다 포킹하기!!


// 에러 발생

엔티티 프레임워크를 다시 새로 깔아야함 - stackoverflow 게시물들이 믿을 만 함 

 

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

 

// 진짜 에러 

- ~~~ 직렬화 하지 못했습니다 -> sirialization

 

저장할때는 각 바이트별로 데이터가 쭉 펴져있어야하기때문에...... - 직렬화

-> 네트워크로 전송할때도 직렬화가 되어있어야함! (binary)

-> 받은 곳에서는 다시 역 직렬화를 해서 원래 객체로 만들어야함! 

 

직렬화하는 방법

1. XML

2. JSON - 가장현실적임 (XML은 무거움) Javascript object Notation

 - .NET에는 JSON을 할수있는게 없음 그래서 써드퍼티 라이브러리? 를 사용 

 

-> 설치해주기

 

-> 설치하고나면

- string JsonConvert.SerializeObject(artist);

private const string Path = "d:\\al.txt";

static void Main(string[] args){
    Serialize();
    
    Deserialize();
}

private static void Deserialize()
{
    string json = File.ReadAllText(Path);
    
    Artist artist = JsonConvert.DeserializeObject<Artist>(json); // 직렬화된 문자열을 넘겨줌
    Console.WriteLine($"{artist.ArtistId} / {artist.Name}");
}

private static void Serialize()
{
    Artist artist = new Artist();
    artist.AristId = 123;
    artist.Name = "Thomas";

	// 직렬화
	string json = JsonConvert.SerializeObject(artist);

	File.WriteAllText(path, json);

	// 역직렬화

-> 사실 여기서는 Artist는 직렬화 할수 있는 그런 객체가 아니기 때문에 

Artist 정의로 가서 

[JsonObject]를 붙여주어야함!!  (+ using문 추가)

> NUGET 솔루션 탐색기 >  추가 > DATA 추가

 

[JsonObject(MemberSerialization.OptIn)]

 - OptIn (권장)

 - OptOut (뺴고싶은거만 명시적으로 지정해서 빼기)

 

[JsonProperty] 어트리뷰트 붙여주어야함!

public int ArtistId() {get; set;}

 

* 크롬에서는 xml형식으로 받겠다고 요청했기때문에 에러가 뜸 postman에서는 json으로 호출하기 때문에 괜츈,,,('?)

* 바꿨던 정의는 템플릿이므로 수정해도 다시 덮어씌워지기 때문에 새로운 entities들만 담아놓는 폴더를 만들어서 추가해줌 (partial로 정의되어있기때문에 클래스가 2개여도 가능 한 것!)

바꿔주는 클래스에도 partial이라고 정의하기! (한 클래스가 두개파일에 나눠서 들어가있음 - C#에서만 아마 가능한 일)

* 프로퍼티는 중복정의로 에러가 나게됨,,,,,,, 

그래서 닷넷은 메타정의를 갖고있는 클래스를 따로 정의할 수 있는 기능을 갖고 있음!...buddy class 만들기 가능

 

 ** 메타클레스 **

public class ArtistMeta
{
    [JsonProperty]
    public int ArtistId{ get; set; }
    
    ~~~~~
}

[MetadataType(typeof(ArtistMeta))] // 친구 메타 클래스
[JsonObject(MemberSerialization.OptIn)]
public partial class Artist
{
}

== 이로써 웹에서 값을줘도 insert가 들어가게됨..!!!1..1.1!!!!!!

 


(배포하기)

> 프로그램 및 기능 > 윈도우 켜기 끄기 > 인터넷 정보 서비스? 

> 기본사이트 > 기본 설정 > 경로를 가보기 (이게 웹 서버의 루트)

> 우클릭 > 응용프로그램 추가 (가상의 사이트 만들기)

 

(배포방법)

ChinnokApi > 우클릭 > 게시 > 게시대상선택 > 폴더 > bin~~ (최조경로로하자) > 프로필만들기 > 게시

>> 이부분은 iis에서 접근할 수 있게끔 응용프로그램으로 만들어주어야함 

 

>> 배포하기 방법 이어서~ > 응용프로그램추가 > 멸칭 ChinookApi > 실제경로 : 위의 경로 > 연동해주면 끗!

 

이제 postman으로 안치고 웹에서 쳐도 결과값이 나올 것임,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 근데 에러

why???!!! 

 

http://192.168.200.182/ChinookApi/artist

 

consume web api from unity

 

unity 개발 시 REST API 호출 방법과 JSON LIBRARY 관련 링크정리

'Archive' 카테고리의 다른 글

[Proxy] Proxy Server란?  (0) 2020.07.01
1002 서버프로그래밍 - 500.19 에러  (0) 2019.10.02
0927 이제 진짜 EWIG 데이터 베이스를 써보자 05  (0) 2019.09.27
0927 EWIG 부모클래스 04  (0) 2019.09.27
0927 ORM 기술을 사용한 EWIG 03  (0) 2019.09.27
    'Archive' 카테고리의 다른 글
    • [Proxy] Proxy Server란?
    • 1002 서버프로그래밍 - 500.19 에러
    • 0927 이제 진짜 EWIG 데이터 베이스를 써보자 05
    • 0927 EWIG 부모클래스 04
    피곤핑
    피곤핑

    티스토리툴바