예: GitHub 검색 소스 설정

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기2분
  • 외부 웹 사이트의 데이터를 쿼리하는 고급 검색 소스를 설정합니다.

    시작하기 전에

    필요한 역할: 없음

    고급 검색 소스를 만들려면 REST API를 통해 외부 웹 사이트에 대한 인증된 액세스와 AngularJS에 대한 기본 지식이 필요합니다.

    프로시저

    1. 플랫폼 UI에서 다음으로 이동합니다. Service Portal > 포털 을 클릭하고 검색 소스를 추가할 포털을 선택합니다.
    2. Search Sources(검색 소스) 관련 목록에서 New(새로 만들기)를 클릭합니다.
    3. 검색 소스의 이름과 ID를 생성합니다.
      ID는 고유해야 하며 공백이나 특수 문자를 포함해서는 안 됩니다.
    4. 데이터 원본 탭에서 스크립팅된 원본 확인란을 선택합니다.
    5. 데이터 가져오기 스크립트 필드에 콘텐츠를 추가합니다.

      GitHub 통합을 설정하려면 다음을 수행합니다.

      (function(query) {
          var results = [];
          /* Calculate your results here. */
          var url = "https://api.github.com/search/repositories?q=" + encodeURI(query);
          var ws = new GlideHTTPRequest(url);
          ws.setBasicAuth("YOUR_USERNAME_HERE", "YOUR_PASSWORD_HERE");
          var jsonOutput = ws.get();
          if (jsonOutput) {
              var response = new JSON().decode(jsonOutput.getBody());
              results = response.items;
              results.forEach(function(result) {
                  result.url = result.svn_url;
                  result.target = "_blank";
                  result.primary = result.full_name;
              });
          }
      
          return results;
      })(query);
      주:
      앞의 예에서 ws.setBasicAuth 에는 외부 자원에 대한 사용자 이름 및 비밀번호가 필요합니다. 자세한 내용은 GlideHTTPRequest - 전역을 참조하세요.
    6. 검색 페이지 템플릿을 사용하여 검색 결과가 표시되는 방식을 사용자 지정할 수 있습니다.
      <div>
        <div class="pull-right">
          <strong>{{item.language}}</strong>
          <a ng-href="{{item.svn_url}}/stargazers" target="_blank" class="m-l-sm"><span class="fa fa-star m-r-xs"></span>{{item.stargazers_count}}</a>
          <a ng-href="{{item.svn_url}}/network" target="_blank" class="m-l-sm"><span class="fa fa-code-fork m-r-xs"></span>{{item.forks}}</a>
        </div>
        <a ng-href="{{item.svn_url}}" target="_blank" class="h4 text-primary m-b-sm block">
          <span ng-bind-html="highlight(item.full_name, data.q)"></span>
        </a>
        <p>{{item.description}}</p>
        <p>Updated <sn-time-ago timestamp="item.updated_at"></sn-time-ago> ago</p>
      </div>