Docker: прокси-контейнер контейнера node.js, остальные интерфейсы для контейнера .net core 2.1 - PullRequest
0 голосов
/ 30 сентября 2018

Сила переполнения стека, я верю в тебя!:)

У меня есть 2 контейнера в докере

  • 1 node.js express (это клиент угловой 6 с рендерингом сервера) с прокси "http-proxy-middleware "к .net core web api (связан с .net core container)

    import 'zone.js/dist/zone-node';
    import 'reflect-metadata';
    import {enableProdMode} from '@angular/core';
    import {ngExpressEngine} from '@nguniversal/express-engine';
    import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader';
    import * as express from 'express';
    import * as bodyParser from 'body-parser';
    import * as cors from 'cors';
    import * as compression from 'compression';
    import * as proxy from 'http-proxy-middleware';
    import {join} from 'path';
    enableProdMode();
    
    export const app = express();
    
    app.use(compression());
    app.use(cors());
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(proxy('http://server/api'));
    
    const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');
    
    app.engine('html', ngExpressEngine({
      bootstrap: AppServerModuleNgFactory,
      providers: [
        provideModuleMap(LAZY_MODULE_MAP)
      ]
    }));
    
    app.set('view engine', 'html');
    app.set('views', './dist/browser');
    
    app.get('/redirect/**', (req, res) => {
      const location = req.url.substring(10);
      res.redirect(301, location);
    });
    
    app.get('*.*', express.static('./dist/browser', {
      maxAge: '1y'
    }));
    
    app.get('/*', (req, res) => {
      res.render('index', {req, res}, (err, html) => {
        if (html) {
          res.send(html);
        } else {
          console.error(err);
          res.send(err);
        }
      });
    });
    
  • 2 .net core 2.1 webapi

    using System.Collections.Generic;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Options;
    using MongoDB.Driver;
    using Server.Models;
    using AutoMapper;
    using Microsoft.Extensions.Configuration;
    using MongoDB.Bson;
    using System;
    
    namespace Server.Api {
        [Route("api/test")]
        public class TestApi : Controller {
    
            [HttpGet]
            public string get() {
                return "api works";
            }
    
            [HttpPost]
            public Login Post([FromBody]Login value) {
                return value;
            }
        }
    }
    

когда я делаю запрос get из контейнера node.js за секунду, я получаю результат, но ошибок нет, но когда я делаю запрос post, я получаю error

Как я понял эту проблемувызвано FromBody в ядре .net, потому что когда я его удаляю, ошибок нет, но данные в запросе тоже нет.

Помогите пожалуйста !!!Что я делаю не так?(

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