Построение динамической конечной точки API REST из центрального файла констант - PullRequest
0 голосов
/ 02 декабря 2018

Я использовал эту конечную точку API REST в коде

public static void Foo(string organization, string project, string buildId, string artifactName, IWorkerInstrumentation instrumentation)
{
            string artifactUrl = $"https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version=4.1";

            // Further code that calls the above endpoint

            // Irrelevant to the discussion

}

И получил предложение, следующее:

Эти строковые константы и патентованные шаблоны URL должны быть изолированы в центральномместо, которое облегчает их обновление, если они меняются.

Я немного подумал об этом, и чувствую, что этот URL-адрес генерируется динамически на основе параметров, передаваемых в эту функцию, и поэтому не можетиметь полный URL-адрес в файле констант.

Самое близкое, что я мог придумать, - это иметь функцию, которая генерирует этот URL-адрес на основе переданных параметров, и иметь определенные части основы URL-адреса, полученные из констант.файл, как показано ниже.

Класс помощника

public static class AzureDevOpsAPIHelper
    {
        public static string GenerateArtifactDownloadUrl(string organization, string project, string buildId, string artifactName)
        {
            return AzureDevOpsConstants.AzureDevOpsApiBaseUrl + "/" + organization + "/" + project + AzureDevOpsConstants.AzureDevOpsBuildsSubUrl + "/" + buildId + "/" + AzureDevOpsConstants.AzureDevOpsArtifactsSubUrl + artifactName + AzureDevOpsConstants.AzureDevOpsArtifactsApiVersion;
        }
    }

Файл констант

public static class AzureDevOpsConstants
{
    /**
     * The constants used by the Azure Dev Ops API helper to generate REST API endpoints to talk to Azure Dev Ops
     */
    public static readonly string AzureDevOpsApiBaseUrl = "https://dev.azure.com/";
    public static readonly string AzureDevOpsBuildsSubUrl = "_apis/build/builds";
    public static readonly string AzureDevOpsArtifactsSubUrl = "artifacts?artifactName=";
    public static readonly string AzureDevOpsArtifactsApiVersion = "&api-version=4.1";
}

Исходный файл API

string artifactUrl = AzureDevOpsAPIHelper.GenerateArtifactDownloadUrl(organization, project, buildId, artifactName);

Я не уверен, какполезно этоМожет ли кто-нибудь предложить альтернативный / более правильный подход к комментарию, который я разместил выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...