Определяемый маршрутизатор. Как считывать значения со страницы?

#routes #frameworks #deno #opine

#маршруты #фреймворки #deno #мнение

Вопрос:

Я работаю как новичок с Deno и Opine framework. Первая страница предназначена для входа в систему, но я не могу прочитать значения полей формы.

Форма :

 <form action="/signin" method="POST" style="margin-top:30px;">
    <input type="text" name="user" placeholder="Username" required="required" class="input-txt" value=""/>
    <p>amp;nbsp;</p>
    <input type="password" name="password" placeholder="Password" required="required" class="input-txt" />
    <div class="login-footer">
        <button type="submit" class="btn btn--right">Sign in  </button>
    </div>
</form>
 

Маршрутизатор в контроллере — моя главная проблема ЗДЕСЬ. Не могу понять, как считывать значения полей :

index.ts :

 import { Router } from 'https://deno.land/x/opine/mod.ts';
const router = new Router();
router.post("/signin", async ( req, res ) => 
{
  console.log( "here... ???" ); 
})
export default router;
 

В server.ts:

 import signin from "./controller/index.ts";
...
app.use( "/", signin );
 

Я нашел много примеров с OAK framework. В сообщении они используют так :

 (ctx) => {
   const form = ctx.request.body ...
 

Но структура Opine, похоже, работает по-другому.

Ответ №1:

Прежде всего, я добавил «использовать json» в свое приложение [1]:

 const app = opine();
const port = 3000;
app.use(urlencoded());
 

Затем я анализирую параметры здесь [2]:

 Users.post("/", async (req, res) => {
  console.log(req.parsedBody.user)
  console.log(req.parsedBody.password)
}
 

Ссылки для моего личного проекта:

1 — https://github.com/ramonmedeiros/learning_deno/blob/master/opine/app.ts#L11

2 — https://github.com/ramonmedeiros/learning_deno/blob/master/opine/controllers/users.ts#L26-L54

Комментарии:

1. Большое спасибо за образцы! Извините, но безуспешно … :(. Я добавил json(). Спасибо. Вот мой маршрутизатор: router.post("/signin", async (req, res) => { const usr = req.parsedBody.user; const psw = req.parsedBody.password; console.log( usr, psw ); }); но он возвращает ошибку ` TypeError: не удается прочитать свойство ‘user’ неопределенного значения в index.ts:7:30 в Layer.handle [как handle_request] (layer.ts: 76:11) ` . Также я пробовал (await req.parsedBody.hasOwnProperty("user") == false) , но при запуске сервера он выдает ошибку ‘hasOwnProperty’. Чего мне не хватает?

2. попробуйте отлаживать, только регистрируя req.parsedBody

3. Возможно, вам потребуется использовать URL-адрес в кодировке: github.com/asos-craigmorten/opine/blob/main/.github/API /…

4. Вау! То есть! это сделал URL-кодированный! Большое спасибо!