본문 바로가기
개발/기본) 기본기

기본기) URL Append (Custome URL Scheme)

by 테샤르 2022. 7. 25.

URL Append (Custome URL Scheme)

URL의 기본에다가 추가로 파라미터를 결합하여 미리 규약된데이터를 넘기는 Query 구분을 추가하는 경우가 종종 있다.

 

Query 로 사용하는 일반적인 용도는 다음과 같다.

Tracking,

Recording,

Searching,

Identifying,

Paginating,

Translating,

Filtering,

 

Query가 포함된 URL을 확이해보면 다음과 같다.

https://drehzr.tistory.com/785?category=362808

 

Schema : https

Host : drehzr.tistroy.com

Path : /785

Query : ?category=362808

프로토콜 : // Scheme Host / Scheme Path ? Query String(키1=값1 & 키2=값2...)

 

우리는 대부분 URL을 Append 하는 과정에서는 Query가 추가된다고 생각하면 된다.

Append를 할 때는 단순하게 '+='로 결합을 해도 된다.

 private void TestURL()
    {
        Uri.TryCreate($"https://drehzr.tistory.com/785", UriKind.Absolute, out var url);
        UriBuilder defaultUri = new UriBuilder(url);
        defaultUri.Query += $"category=362808";
        Application.OpenURL(defaultUri.Uri.ToString());
    }

 

. NET API 중 UriBuilder 사용해서 Query의 형식을 맞추기 위해서 (유효성 검사)를 포함한 코드이다.

    public string GetAppendURL(string _url, string _append)
    {
        System.UriBuilder baseUri = new System.UriBuilder(_url);

        string queryToAppend = _append;

        if (baseUri.Query.Length == 0 || baseUri.Query == null)
        {
             baseUri.Query += queryToAppend.Replace('&','?');
        }
        else if (baseUri.Query.Length > 1)
        {
            baseUri.Query = baseUri.Query.Substring(1) + queryToAppend.Replace('?','&');
        }
        else
        {
            baseUri.Query += queryToAppend.Replace('?','&');
        }

        return baseUri.Uri.ToString();
    }

Microsoft UriBuilder : [링크]

 

UriBuilder Class (System)

Provides a custom constructor for uniform resource identifiers (URIs) and modifies URIs for the Uri class.

docs.microsoft.com

Microsoft UriBuilder.Query : [링크]

Microsoft Uri.TryCraete  : [링크]

 

Uri.TryCreate 메서드 (System)

새 Uri를 만듭니다. Uri를 만들 수 없으면 예외를 throw하지 않습니다.

docs.microsoft.com

 

 

 

★☆

 

반응형

댓글