Как обрабатывать относительные пути статических файлов в веб-API? - PullRequest
0 голосов
/ 04 июля 2018

Мой проект Angular работает на другом порту, чем мой API-интерфейс (asp.net). Я использую прокси для маршрутизации всех http-запросов на внутренний веб-сервер, как показано ниже.

{
  "/api": {
     "target":  {
       "host": "localhost",
       "protocol": "https:",
       "port": 5001
     },
     "secure": false,
     "logLevel" : "debug",
     "changeOrigin": true
  }
}

мой вариант угловых проектов:

 "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "art-ng-core:build",
            "host": "www.artngcore.com",
            "port": 8500,
            "sslKey": "key.key",
            "sslCert": "server.crt"
          },
          "configurations": {
            "production": {
              "browserTarget": "art-ng-core:build:production"
            }
          }
        },

Моя проблема здесь - статические файлы, обслуживаемые API, т.е. изображения.

<img src={{imagePath}}>

Мои статические файлы внутреннего интерфейса хранятся в другой статической папке " SystemData " с общим путем " Данные ".

Скажите, у меня есть этот файл с относительным путем: /Data/UserData/test.jpg. если я предоставлю атрибуту src относительный путь, URL-адрес изображения будет выглядеть как https://www.artngcore.com:8500/Data/UserData/test.jpg, где он должен быть https://localhost:5001/Data/UserData/test.jpg

Как я могу прокси-вызов для статических файлов так же, как я сделал для вызовов Http?

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

Я сохраняю относительные пути в своей базе данных и запускаю следующий метод для генерации URL

public string GenerateUrl(string filePath, HttpRequest ctx) {
    string physicalPath = this.GetRootPath() + filePath;
    var url = physicalPath.Replace(Directory.GetCurrentDirectory (),$@"{ctx.Scheme}://{ctx.Host}").Replace(@"SystemData", @"Data");
    return url;
}

Спасибо.

1 Ответ

0 голосов
/ 04 июля 2018

Вы хотите сделать с URL-адресами, начинающимися с "/Data", то же самое, что вы сделали для URL-адресов, начинающимися с "/api".

Итак ... просто сделайте то же самое и добавьте раздел в вашей конфигурации прокси для "/Data".

...