Как выполнить PUT в Node JS - PullRequest
       4

Как выполнить PUT в Node JS

0 голосов
/ 04 марта 2020

Ниже мое приложение. js код.

import bodyParser from 'body-parser';
import cors from 'cors';
import requestIp from 'request-ip';
import os from 'os';
import { AppRoutes, AuthRoutes } from './routes';


const app = express();
app.use(cors());
app.disable('x-powered-by');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use((req, res, next)=> {
  const clientIp = requestIp.getClientIp(req);
  logger.debug(JSON.stringify(req.socket.address()));
  logger.debug(`incoming IP ${clientIp}`);
  next();
});
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
     next();
});

// Api Routes.
app.use('/api/login', AppRoutes);
app.use('/api', verifyToken, AuthRoutes);


export default app;

Ниже мой индекс. js код. Код ниже работает нормально для GET и POST, но не работает для PUT. Выдает ошибку.

У вас нет разрешения на доступ к /api/save-user-profile/ndomuser-name отпуска.

import {
  getCustomersbyId
} from './controller/customer-controller';
import { Login } from './controller/login';
import {
  modelEdit,
  saveProfile
} from './controller/extension';

const AuthRoutes = Router();
const AppRoutes = Router();

AuthRoutes.get('/customers/', getCustomersbyId);
AuthRoutes.post('/model-entity-links/info', modelEdit);
AuthRoutes.put('/save-user-profile/:username', saveProfile);
AppRoutes.post('/', Login);

export { AuthRoutes, AppRoutes };

Когда Я меняю PUT на POST, он работает нормально. Но я хочу сделать это с помощью PUT. Я что-то упустил для настройки PUT. Я попробовал ниже код, а также в приложении. js. Но все равно получаю ту же проблему

       res.header("Access-Control-Allow-Origin", "*");
       res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
       res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');

Мой код saveProile приведен ниже.

export const saveUserProfile = (req, res) => {
  logger.debug({ method: 'saveUserProfile', message: MESSAGE.ENTER });
  const { username } = req.params;
  const userProfileInfo = JSON.parse(JSON.stringify(req.body));
  if (username &&  !isEmptyObject(userProfileInfo)) {
    postUserProfile(username, userProfileInfo)
    .then(r=>{
      res.status(200).send(r.data);
    })
    .catch(e=>{
      logger.error({ method: 'saveUserProfile', message: e.response ? JSON.stringify(e.response.data.response_message) : e });
      parseError(e, res);
    });
  } else {
    logger.error({ method: 'saveUserProfile', message: MESSAGE.ERROR_INVALID_PARAM });
    parseError(MESSAGE.ERROR_INVALID_PARAM, res, true);
  }
};


1 Ответ

0 голосов
/ 17 марта 2020

Я решил эту проблему. Это была проблема apache сервера, когда операции PUT и DELETE были ограничены. Мы внесли изменения в конфигурацию apache, и это сработало. Спасибо всем за ответы.

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