Я учусь создавать API с использованием API-интерфейсов Amazon Web Services, DynamoDB и Lambda.
Я следил за видео-плейлистом на Youtube.До сих пор я создал желаемую лямбда-функцию, таблицу DynamoDB, а также шлюз API.
Теперь все, что мне нужно сделать, - это создать внешний интерфейс, который отображает мои текущие элементы в таблице, а также запись.
Пока я дошел до этой части здесь .
В видео он использует JavaScript для выполнения запроса ajax и извлечения элементов из таблицы DynamoDB.Я написал тот же запрос ajax с html.
<html>
<head>
<h1 style="color:rosybrown;">Latest guestbook entries:</h1>
</head>
<body>
<div id="entries">
</div>
<h1>New Entry</h1>
<form>
<label for="msg">Message</label>
<textarea id="msg"></textarea>
<button id="submitButton">Submit</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
var API_URL = "someURL/prod/entries";
$(document).ready(function(){
$.ajax({
type: "GET",
url: API_URL,
success: function(data){
$("#entries").html("");
data.Items.forEach(function(guestbookItem){
$("#entries").append("<p>"+guestbookItem+"</p>");
})
}
});
});
</script>
</body>
Итак, я собираюсь объяснить свою цель.Цель состоит в том, чтобы отобразить элементы в таблице DynamODB, которую я создал, а также принять новые записи.Он имеет элемент date
и message
.
Шлюз API имеет ресурс /entries
и имеет два метода: GET
и POST
./prod
означает, что он был развернут на этапе производства.
При вызове URL-адреса для метода GET
.Я получаю этот вывод
"{\"Items\": [{\"date\": 20180512, \"message\": \"this is my 4th message\"}, {\"date\": 20180513, \"message\": \"I love AWS\"}], \"Count\": 2, \"ScannedCount\": 2, \"ResponseMetadata\": {\"RequestId\": \"SOME_REQUEST_ID\", \"HTTPStatusCode\": 200, \"HTTPHeaders\": {\"server\": \"Server\", \"date\": \"Mon, 14 May 2018 20:32:43 GMT\", \"content-type\": \"application/x-amz-json-1.0\", \"content-length\": \"160\", \"connection\": \"keep-alive\", \"x-amzn-requestid\": \"SOME_REQUEST_ID\", \"x-amz-crc32\": \"2401247050\"}, \"RetryAttempts\": 0}}"
Однако после запуска файла index.html
на моем локальном хосте.
Записи не отображаются.Когда я проверил консоль, оказалось, что я получаю следующую ошибку
index.html:33 Uncaught TypeError: Cannot read property 'forEach' of undefined
at Object.success (index.html:33)
at u (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at k (jquery.min.js:2)
at XMLHttpRequest.<anonymous> (jquery.min.js:2)
Я не был уверен, что происходит.Items
существует в ответе.Я застрял с этим в течение нескольких дней.Если бы кто-нибудь мог указать на то, что мне не хватало, это было бы очень признательно!