개발/기본) 기본기

기본기) URL Append (Custome URL Scheme)

테샤르 2022. 7. 25. 11:05

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

 

 

 

★☆

 

반응형